package cn.tedu.apiday01;

public class ApiString {//测试String工具类
    public static void main(String[] args) {
        //字符串底层维护了一个char[]，而且是final的。也就是数组长度不能改，数组里的值也不能改   所以字符串是一个常量
        char[] c = new char[]{'a','b','c'};
        String s = new String(c);//触发char[]类型的含参构造   存在堆内存中
        String s1 = "abc";//直接赋值，简写    存在堆内存中的常量池中 高效。因为常量池的相同数据只会存一次
        String s2 = "abc";
        System.out.println(s==s1);//false ，s的地址值在堆内，s1在堆内的常量池里，地址值不同，使用false
        System.out.println(s1==s2);//true 因为相同数据，拥有相同的储存空间，内存中就是相同的地址值
        //常用方法：
        System.out.println(s.charAt(1));//返回指定索引处的 char 值
        System.out.println(s.concat("123"));//将指定字符串连接到此字符串的结尾
        System.out.println(s.contains("bc"));//当且仅当此字符串包含指定的 char 值序列时，返回 true。
        System.out.println(s.endsWith("c"));//测试此字符串是否以指定的后缀结束
        System.out.println(s.equals("abc"));//将此字符串与指定的对象的字符串比较
        System.out.println(s.indexOf("a"));//返回指定字符在此字符串中第一次出现处的索引。
        System.out.println(s.lastIndexOf("a"));//返回指定字符在此字符串中最后一次出现处的索引。
        System.out.println(s.isEmpty());//判断字符串是否为空
        System.out.println(s.length());//获取字符串的长度
        System.out.println(s.replace('a','0'));//把旧字符用新字符替换
        System.out.println(s.startsWith("ab"));//判断是否以指定字符串开始
        System.out.println(s.substring(1));//从指定下标处开始，截取所有字符串
        System.out.println(s.substring(0,2));//从指定下标开始到指定下标结束，截取中间段  也就是含头不含尾
        System.out.println(s.toLowerCase());//自动转成小写
        System.out.println(s.toUpperCase());//自动转成大写
        System.out.println(s.trim());//去除前导空格和后尾空格
        String num = String.valueOf(123);//用来把各种类型的数据转成String类型
        System.out.println(num+1);//1231
//        System.out.println("---------字符串转数组-----------");
//        byte[] bs = s.getBytes();
//        System.out.println(Arrays.toString(bs));
//        char[] cs = s.toCharArray();
//        System.out.println(Arrays.toString(cs));
//        s = "a 1 b 2 c 3";
//        String[] ss = s.split(" ");//按照指定的空格切割字符串
//        System.out.println(Arrays.toString(ss));*/
//        Scanner scanner = new Scanner(System.in);
//        String string = scanner.nextLine();//接受键盘输入的整数字符串
//        int sum = 0;
//        for (int i = 0;i<string.length();i++){//遍历字符串数组，因为字符串底层就是char数组
//            char ch = string.charAt(i);
//           // sum=sum+ch;//把字符转成整数参与运算，如“1”运算时使用字符1对应的整数49做运算
//            sum=sum+ch-'0';//可以拿到字符1变成整数2做运算吗？--------可以直接减去‘0’;就好了，比如‘1’对应的是49，然后‘0’对应的是48，也就是如果想求整数1，直接减去‘0’。也就是49减去48等于1
//        }
//        System.out.println(sum);



    }
}
